$(document).ready(function ()
{
    // Sự kiện click trên link đăng nhập
    $('a.kh-login-link').live('click', function ()
    {
        // Nếu chưa có phần tử chứa form login
        if ($('#kh-login-dialog').length == 0) {
            Dialog.show('Vui lòng đợi giây lát!', true, false);
            $.post('ajax_controller.php',
                {
                    requestType:'PGlobal',
                    requestName:'requestLoginForm'
                }, function (data)
                {
                    $('body').append(data);
                    Dialog.hide();
                    showObject('kh-login-dialog');
                },
                'html');
        } else {
            showObject('kh-login-dialog');
        }


        return false;
    });

    function showObject(id)
    {
        $(document).scroll();
        $('#' + id).fadeIn(800);
    }


    // Sự kiện click trên button Cancel
    $('#frmKhLogin #btnCancel').live('click', function ()
    {
        $('#kh-login-dialog').fadeOut(500);
        $('#password').val('');
        $('#username').val('');
        return false;
    });

    $('#frmKhLogin').live('submit', function ()
    {
        var username = $('#username');
        var password = $('#password');
        if (!/^.+$/.test(username.val()) || username.val() == username.attr('title')) {
            alert('Vui lòng nhập tên đăng nhập!');
            username.focus();
        } else if (!/^.+$/.test(password.val()) || password.val() == password.attr('title')) {
            alert('Vui lòng nhập mật khẩu!');
            password.focus();
        } else {
            $.post('ajax_controller.php',
                {
                    requestType:'KhachHang',
                    requestName:'isValidUser',
                    requestParams:{
                        uid:username.val(),
                        pwd:password.val()
                    }
                },
                function (data)
                {
                    if (data.code == '0') {
                        alert('Đăng nhập thất bại, vui lòng thử lại!');
                    } else {
                        $('#sb-box-kh').html(data.html);
                        $('#kh-login-dialog').fadeOut(500);
                        username.val('');
                        password.val('');
                    }

                    Dialog.hide();
                }, 'json').complete(function ()
                {
                    Dialog.hide();
                });
        }
        return false;
    });


    $('#logout').live('click', function ()
    {
        Dialog.show('Vui lòng đợi giây lát!', true, false);
        $.post(
            'ajax_controller.php',
            {
                requestType:'KhachHang',
                requestName:'logout'
            },
            function (data)
            {
                $('#sb-box-kh').html(data);
                Dialog.hide();
            },
            'html'
        );
        return false;
    });


    $('#frmDSearch').live('submit', function ()
    {
        if ($('#lstPrice').val() == 'null' && $('#lstManufacturer').val() == "null" &&
            !/^.+$/.test($('#txtProductName').val())) {
            Dialog.show('<span class="error">Vui lòng chọn ít nhất một tiêu chí tìm kiếm!</span>', false, true);
            return false;
        }
    });

    // Link đăng kí khách hàng
    $('a.kh-register-link').live('click', function ()
    {
        // Kiểm tra xem div#kh-register-dialog có tồn tại chưa
        // Nếu chưa có thì load từ server về
        if ($('#kh-register-dialog').length == 0) {
            Dialog.show('Vui lòng đợi giây lát!', true, false);
            $.post('ajax_controller.php',
                {
                    requestType:'PGlobal',
                    requestName:'requestKhRegisterForm'
                }, function (data)
                {
                    $('body').append(data);
                    $('#btnKhRegisterCancel').click(function ()
                    {
                        $('#kh-register-dialog').fadeOut(300);
                    });

                    Dialog.hide();
                    $('#kh-register-dialog').fadeIn(400);
                    $('#kh-register-dialog input.required').before('<span class="sreq">(*)</span>');
                    $('#kh-register-dialog input').each(function ()
                    {
                        var imgId = $(this).attr('id') + 'Info';
                        var element = '<img class="inputInfo" src="img/ajax/ok.png" alt="' + imgId + '" id="' + imgId + '"/>';
                        $(this).after(element);
                    });

                    $('.textbox').example(function ()
                    {
                        return $(this).attr('title');
                    }, {className:'form-example'});

                    initialFormKhRegister();

                }, 'html');
        } else {
            $('#kh-register-dialog').fadeIn(400);
        }

        return false;
    });


    /**

     */
    function initialFormKhRegister()
    {

        var taikhoankh = $('#taikhoankh');
        var matkhaukh = $('#matkhaukh');
        var rematkhaukh = $('#rematkhaukh');
        var hotenkh = $('#hotenkh');
        var diachikh = $('#diachikh');
        var sodtkh = $('#sodtkh');
        var emailkh = $('#emailkh');

        var wailtimg = 'img/ajax/wait.gif';
        var goodimg = 'img/ajax/ok.png';
        var errorimg = 'img/ajax/warning.png';

        function waiting(id)
        {
            $('#' + id + 'Info').attr('src', wailtimg).fadeIn(300);
        }

        /**
         * Thiết lập hiển cảnh báo (ảnh) bên phải các textfield
         * @param id ID của textfied
         * @param msg Chuỗi thông báo
         * @param err true nếu báo lỗi, false nếu thông báo thành công
         */
        function warning(id, msg, err)
        {
            var img = $('#' + id + 'Info');
            img.fadeIn(300);
            if (err) {
                img.attr('src', errorimg);
                img.attr('title', msg);
                $('#' + id).addClass('error');
            } else {
                img.attr('src', goodimg);
                img.attr('title', msg);
                $('#' + id).removeClass('error');
            }
        }

        function taikhoankhValidate()
        {
            waiting('taikhoankh');
            if (!/^.+$/.test(taikhoankh.val()) || taikhoankh.val() == taikhoankh.attr('title')) {
                warning('taikhoankh', 'Vui lòng nhập tên tài khoản', true);
            } else {
                // Check exists taikhoankh
                $.post(
                    'ajax_controller.php', {
                        requestType:'KhachHang',
                        requestName:'exists',
                        requestParams:taikhoankh.val()
                    }, function (data)
                    {
                        if (data == '1') {
                            warning('taikhoankh', 'Tên tài khoản đã tồn tại, vui lòng nhập tên khác!', true);
                        } else {
                            warning('taikhoankh', 'Tên tài khoản hợp lệ');
                        }
                    }
                );
            }
        }

        function matkhaukhValidate()
        {
            waiting('matkhaukh');
            if (!/^.+$/.test(matkhaukh.val()) || matkhaukh.val() == matkhaukh.attr('title')) {
                warning('matkhaukh', 'Vui lòng nhập mật khẩu!', true);
            } else {
                warning('matkhaukh', 'Mật khẩu hợp lệ', false);
            }
        }

        function rematkhaukhValidate()
        {
            waiting('rematkhaukh');
            if (matkhaukh.val() != rematkhaukh.val()) {
                warning('rematkhaukh', 'Nhập lại mật khẩu không chính xác!', true);
            } else if (matkhaukh.hasClass('error')) {
                warning('rematkhaukh', 'Vui lòng nhập mật khẩu!', true);
            } else {
                warning('rematkhaukh', 'Nhập lại mật khẩu hợp lệ!', false);
            }
        }

        function hotenkhValidate()
        {
            waiting('hotenkh');
            if (!/^.+$/.test(hotenkh.val()) || hotenkh.val() == hotenkh.attr('title')) {
                warning('hotenkh', 'Vui lòng nhập họ tên!', true);
            } else {
                warning('hotenkh', 'Họ tên hợp lệ!', false);
            }
        }

        function diachikhValidate()
        {
            waiting('diachikh');
            if (!/^.+$/.test(diachikh.val()) || diachikh.val() == diachikh.attr('title')) {
                warning('diachikh', 'Vui lòng nhập địa chỉ!', true);
            } else {
                warning('diachikh', 'Địa chỉ hợp lệ!', false);
            }
        }

        function sodtkhValidate()
        {
            waiting('sodtkh');
            if (!/^[0-9]{10,11}$/.test(sodtkh.val()) || sodtkh.val() == sodtkh.attr('title')) {
                warning('sodtkh', 'Vui lòng nhập địa chỉ!', true);
            } else {
                warning('sodtkh', 'Địa chỉ hợp lệ!', false);
            }
        }

        function emailkhValidate()
        {
            waiting('emailkh');
            if (!/^([\d\w]+\.)*\w+@([\d\w]+\-*)*(\.[\w\d]+)*\.\w{2,4}$/.test(emailkh.val()) || emailkh.val() == emailkh.attr('title')) {
                warning('emailkh', 'Vui lòng nhập địa chỉ!', true);
            } else {
                warning('emailkh', 'Địa chỉ hợp lệ!', false);
            }
        }


        $('#frmKhRegister input').blur(function ()
        {
            var fn = $(this).attr('id') + 'Validate';
            eval(fn + '()');

        });

        $('#frmKhRegister').submit(function ()
        {
            taikhoankhValidate();
            matkhaukhValidate();
            rematkhaukhValidate();
            hotenkhValidate();
            diachikhValidate();
            sodtkhValidate();
            emailkhValidate();

            // Kiểm tra xem tất cả đã hợp lệ
            var checkFlag = true;
            $('#frmKhRegister input').each(function ()
            {
                if ($(this).hasClass('error')) {
                    checkFlag = false;
                }
            });

            if (checkFlag) {
                $.post('ajax_controller.php', {
                    requestType:'KhachHang',
                    requestName:'register',
                    requestParams:{
                        'hotenkh':hotenkh.val(),
                        'diachikh':diachikh.val(),
                        'sodtkh':sodtkh.val(),
                        'emailkh':emailkh.val(),
                        'taikhoankh':taikhoankh.val(),
                        'matkhaukh':matkhaukh.val()
                    }
                }, function (data)
                {
                    if (data['errcode'] == '0') {
                        $('#kh-register-dialog').fadeOut(200);
                        alert('Đăng kí thành công!');
                        $('a.kh-login-link').click();
                        $('#username').val(taikhoankh.val());
                        $('#password').val(matkhaukh.val());
                        $('#frmKhLogin').submit();
                    } else {
                        alert('Đăng ký thất bại! ' + data['errmsg']);
                    }
                }, 'json');
            }
            return false;
        });
    }
});